﻿using System;
using System.Xml;
using System.Collections.Generic;
using System.Text;

using Weazel.Gezel.Model;

namespace Weazel.Gezel.Exporter
{
  internal class PortExporter
  {
    internal static void ToXml(XmlDocument xmlDoc, XmlElement parent, Port port)
    {
      XmlElement portElement = xmlDoc.CreateElement("Connector");

      // name attribute
      XmlAttribute nameAttribute = xmlDoc.CreateAttribute("name");
      nameAttribute.Value = port.LocalName;
      portElement.Attributes.Append(nameAttribute);

      // id attribute
      XmlAttribute idAttribute = xmlDoc.CreateAttribute("id");
      idAttribute.Value = port.Name;
      portElement.Attributes.Append(idAttribute);

      // kind attribute
      XmlAttribute kindAttribute = xmlDoc.CreateAttribute("kind");
      kindAttribute.Value = "port"; // trivial
      portElement.Attributes.Append(kindAttribute);

      // direction attribute
      XmlAttribute directionAttribute = xmlDoc.CreateAttribute("direction");
      directionAttribute.Value = port is InPort ? "in" : "out";
      portElement.Attributes.Append(directionAttribute);
      
      // type attribute
      XmlAttribute typeAttribute = xmlDoc.CreateAttribute("type");
      typeAttribute.Value = port.Signed ? "signed" : "unsigned";
      portElement.Attributes.Append(typeAttribute);

      // width attribute
      XmlAttribute widthAttribute = xmlDoc.CreateAttribute("width");
      widthAttribute.Value = port.Width.ToString();
      portElement.Attributes.Append(widthAttribute);

      parent.AppendChild(portElement);
    }
  }
}
